package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.KardexDAOSQLServer;
import co.inventario.datos.sqlserver.ConceptoKardexDAOSQLServer;
import co.inventario.datos.sqlserver.InsumoDAOSQLServer;
import co.inventario.entidad.KardexDTO;
import co.inventario.entidad.ConceptoKardexDTO;
import co.inventario.entidad.InsumoDTO;

public class KardexNegocio {

	public void crear(KardexDTO kardexDTO, Connection connection) throws Exception, SQLException {
		KardexDAOSQLServer kardexDAOSQLServer = new KardexDAOSQLServer();
		KardexDTO kardexDTOConsultado = kardexDAOSQLServer.consultarPorConsecutivo(kardexDTO, connection);
		if (kardexDTOConsultado == null) {
			kardexDAOSQLServer.crear(kardexDTO, connection);
		} else {
			throw new Exception("El consecutivo de Kardex que intenta crear, ya existe.");
		}
	}

	public void actualizar(KardexDTO kardexDTO, Connection connection) throws Exception, SQLException {
		KardexDAOSQLServer kardexDAOSQLServer = new KardexDAOSQLServer();
		KardexDTO kardexDTOConsultado = kardexDAOSQLServer.consultarPorConsecutivo(kardexDTO, connection);
		if (kardexDTOConsultado != null) {
			kardexDAOSQLServer.actualizar(kardexDTO, connection);
		} else {
			throw new Exception("El consecutivo de Kardex que intenta crear, no existe.");
		}
	}

	public KardexDTO consultarPorCodigo(KardexDTO kardexDTO, Connection connection) throws Exception, SQLException {
		KardexDAOSQLServer kardexDAOSQLServer = new KardexDAOSQLServer();
		KardexDTO kardexDTOConsultado = kardexDAOSQLServer.consultarPorCodigo(kardexDTO, connection);
		return kardexDTOConsultado;
	}

	public ArrayList<KardexDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		KardexDAOSQLServer kardexDAOSQLServer = new KardexDAOSQLServer();
		ArrayList<KardexDTO> kardexDTOLista = kardexDAOSQLServer.consultarTodo(connection);
		InsumoDAOSQLServer insumoDAOSQLServer = new InsumoDAOSQLServer();
		InsumoDTO insumoDTO = null;
		ConceptoKardexDAOSQLServer conceptoKardexDAOSQLServer = new ConceptoKardexDAOSQLServer();
		ConceptoKardexDTO conceptoKardexDTO = null;
		for (KardexDTO kardexDTO : kardexDTOLista) {
			insumoDTO = insumoDAOSQLServer.consultarPorCodigo(kardexDTO.getInsumoDTO(), connection);
			kardexDTO.setInsumoDTO(insumoDTO);
			conceptoKardexDTO = conceptoKardexDAOSQLServer.consultarPorCodigo(kardexDTO.getConceptoKardexDTO(), connection);
			kardexDTO.setConceptoKardexDTO(conceptoKardexDTO);
		}
		return kardexDTOLista;
	}
}
